﻿#region License
/*
 * Copyright ©2011-2012 EasyMon Project
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *  
 */
#endregion

using System.Collections.Generic;
using EasyMon.Common.Values;

namespace EasyMon.Common.Sources
{
    public static class SourceUtils
    {
        public static void SynchStatusWithChildren<TOwner, TChild>(this TOwner owner, IEnumerable<TChild> children) 
            where TOwner : ValueBase 
            where TChild : ValueBase
        {
            var allUnavailable = true;

            foreach (var child in children)
            {
                if (child.Status > owner.Status)
                {
                    owner.Status = child.Status == ValueStatus.Unavailable
                                       ? ValueStatus.Alarm
                                       : child.Status;
                }

                if (child.Status != ValueStatus.Unavailable)
                    allUnavailable = false;
            }

            if (allUnavailable)
                owner.Status = ValueStatus.Unavailable;
        }
    }
}